/**
 * 对象中主要包含了两个部分:
 * 属性
 * 方法
 */
class Person {
    /**
     * 直接定义的属性是实例属性，需要通过对象的实例去访问:
     * 使用static 开头的属性是静态属性(类属性)，可以直接通过类去访问
     * readonly开头的属性表示一个只读的属性无法修改
     */
    name: string = ''
    age: number = 0
    height: number

    static hand: number = 2

    readonly foot: number = 2
    
    static readonly eyes: number = 2

    /**
     * constructor 被称为构造函数
     * 构造函数会在对象创建时调用
     */
    constructor(height: number) {
        // 在实例方法中，this 就表示当前当前的实例
        // 在构造函数中当前对象就是当前新建的那个对象
        this.height = height

    }

    say(words: string): void {
        console.log(words);
    }

}

const person = new Person(11)
console.log(person);
